// 本地存储键名
const STORAGE_KEY = 'metadata_templates';

// 模板字段类型
export interface TemplateField {
  name: string;
  type: 'string' | 'number' | 'boolean' | 'object' | 'array' | 'template';
  required: boolean;
  constraint?: string;
  format?: string;
  templateId?: string; // 空字符串表示未选择，有值表示已选择模板ID
}

// 模板接口
export interface Template {
  id: string;
  name: string;
  description?: string;
  fields: TemplateField[];
  createdAt?: string;
}

/**
 * 获取所有模板
 * @returns {Template[]} 模板数组
 */
export const getTemplates = (): Template[] => {
  try {
    const stored = localStorage.getItem(STORAGE_KEY);
    return stored ? JSON.parse(stored) : [];
  } catch (error) {
    console.error('Failed to get templates from storage:', error);
    return [];
  }
};

/**
 * 保存模板（新增或更新）
 * @param {Template} template 要保存的模板
 */
export const saveTemplate = (template: Template): void => {
  try {
    const templates = getTemplates();
    const index = templates.findIndex(t => t.id === template.id);
    
    if (index > -1) {
      // 更新现有模板
      templates.splice(index, 1, template);
    } else {
      // 添加新模板
      templates.push(template);
    }
    
    localStorage.setItem(STORAGE_KEY, JSON.stringify(templates));
  } catch (error) {
    console.error('Failed to save template:', error);
  }
};

/**
 * 删除模板
 * @param {string} id 要删除的模板ID
 */
export const deleteTemplate = (id: string): void => {
  try {
    const templates = getTemplates().filter(t => t.id !== id);
    localStorage.setItem(STORAGE_KEY, JSON.stringify(templates));
  } catch (error) {
    console.error('Failed to delete template:', error);
  }
};

